<?php

class WfEstadistica {
//<editor-fold defaultstate="collapsed" desc="Constantes">
  const NOMBRE_ENTIDAD = "WfEstadistica";
//</editor-fold>

//<editor-fold defaultstate="collapsed" desc="Campos">
  private $_id;
  private $_nombre;
  private $_descripcion;
  private $_llave;
  private $_tipoGrafico;
  private $_titulo;
  private $_tituloEjeY;
  private $_nombreSerie;
  private $_activo;
  private $_existe;
//</editor-fold>

//<editor-fold defaultstate="collapsed" desc="Propiedades">
  public function getId() { return $this->_id; }
  public function setId($value) { $this->_id = $value; }

  public function getNombre() { return $this->_nombre; }
  public function setNombre($value) { $this->_nombre = $value; }

  public function getDescripcion() { return $this->_descripcion; }
  public function setDescripcion($value) { $this->_descripcion = $value; }

  public function getLlave() { return $this->_llave; }
  public function setLlave($value) { $this->_llave = $value; }

  public function getTipoGrafico() { return $this->_tipoGrafico; }
  public function setTipoGrafico($value) { $this->_tipoGrafico = $value; }

  public function getTitulo() { return $this->_titulo; }
  public function setTitulo($value) { $this->_titulo = $value; }

  public function getTituloEjeY() { return $this->_tituloEjeY; }
  public function setTituloEjeY($value) { $this->_tituloEjeY = $value; }

  public function getNombreSerie() { return $this->_nombreSerie; }
  public function setNombreSerie($value) { $this->_nombreSerie = $value; }

  public function getActivo() { return $this->_activo; }
  public function setActivo($value) { $this->_activo = $value; }

  public function getExiste() { return $this->_existe; }
  public function setExiste($value) { $this->_existe = $value; }
//</editor-fold>
  
//<editor-fold defaultstate="collapsed" desc="Metodos Publicos">
  /**
   * constructor
   * @author VSR, 16/04/2012
   */
  public function __construct() {
    try {
        $this->_id = -1;
        $this->_nombre = "";
        $this->_descripcion = "";
        $this->_llave = "";
        $this->_tipoGrafico = "";
        $this->_titulo = "";
        $this->_tituloEjeY = "";
        $this->_nombreSerie = "";
        $this->_activo = 0;
        $this->_existe = 0;
    } catch (Exception $e) {
      throw new Exception($e->getMessage());
    }
  }

  /**
   * obtiene registro por su id
   * @author VSR, 16/04/2012
   */
  public function obtenerPorId($id = -1) {
    try {
      //define llamada procedimiento almacenado
      $sp = "CALL spu_WfEstadistica_ObtenerPorId({id});";

      //reemplaza marcas por valores reales
      $sp = str_replace("{id}", $id, $sp);

      //ejecuta procedimiento
      $arr = Bd::exec($sp);
      $totalRegistros = count($arr);

      //si se encontraron registros entonces se asignan
      if ($totalRegistros > 0) {
        $row = $arr[0];
        $this->_id = ( is_null($row["Id"]) ) ? -1 : $row["Id"];
        $this->_nombre = ( is_null($row["Nombre"]) ) ? "" : $row["Nombre"];
        $this->_descripcion = ( is_null($row["Descripcion"]) ) ? "" : $row["Descripcion"];
        $this->_llave = ( is_null($row["Llave"]) ) ? "" : $row["Llave"];
        $this->_tipoGrafico = ( is_null($row["TipoGrafico"]) ) ? "" : $row["TipoGrafico"];
        $this->_titulo = ( is_null($row["Titulo"]) ) ? "" : $row["Titulo"];
        $this->_tituloEjeY = ( is_null($row["TituloEjeY"]) ) ? "" : $row["TituloEjeY"];
        $this->_nombreSerie = ( is_null($row["NombreSerie"]) ) ? "" : $row["NombreSerie"];
        $this->_activo = ( is_null($row["Activo"]) ) ? 0 : $row["Activo"];
        $this->_existe = ($this->_id == -1) ? 0 : 1;
      } else {
        $this->_id = -1;
        $this->_nombre = "";
        $this->_descripcion = "";
        $this->_llave = "";
        $this->_tipoGrafico = "";
        $this->_titulo = "";
        $this->_tituloEjeY = "";
        $this->_nombreSerie = "";
        $this->_activo = 0;
        $this->_existe = 0;
      }
    } catch (Exception $e) {
      throw new Exception($e->getMessage());
    }
  }

  /**
   * crea o actualiza un registro
   * @author VSR, 16/04/2012
   */
  public function grabar() {
    try {
      //define llamada procedimiento almacenado
      $sp = "CALL spu_WfEstadistica_Grabar({id},'{nombre}','{descripcion}','{llave}','{tipoGrafico}','{titulo}','{tituloEjeY}','{nombreSerie}',{activo});";

      //reemplaza marcas por valores reales
      $sp = str_replace("{id}", $this->_id, $sp);
      $sp = str_replace("{nombre}", $this->_nombre, $sp);
      $sp = str_replace("{descripcion}", $this->_descripcion, $sp);
      $sp = str_replace("{llave}", $this->_llave, $sp);
      $sp = str_replace("{tipoGrafico}", $this->_tipoGrafico, $sp);
      $sp = str_replace("{titulo}", $this->_titulo, $sp);
      $sp = str_replace("{tituloEjeY}", $this->_tituloEjeY, $sp);
      $sp = str_replace("{nombreSerie}", $this->_nombreSerie, $sp);
      $sp = str_replace("{activo}", $this->_activo, $sp);

      //ejecuta procedimiento
      $arr = Bd::exec($sp);
      $totalRegistros = count($arr);

      //si se encontraron registros entonces se asignan
      if ($totalRegistros > 0) {
        $row = $arr[0];
        $this->_id = $row["Id"];
        $this->_existe = 1;
      } else {
        $this->_id = -1;
        $this->_existe = 0;
      }
    } catch (Exception $e) {
      throw new Exception($e->getMessage());
    }
  }

  /**
   * elimina un registro
   * @author VSR, 16/04/2012
   */
  public function eliminar() {
    try {
      //define llamada procedimiento almacenado
      $sp = "CALL spu_WfEstadistica_Eliminar({id});";

      //reemplaza marcas por valores reales
      $sp = str_replace("{id}", $this->_id, $sp);

      //ejecuta procedimiento
      $arr = Bd::exec($sp);
      $totalRegistros = count($arr);

      //si se encontraron registros entonces se asignan
      $this->_id = -1;
      $this->_existe = 0;
    } catch (Exception $e) {
      throw new Exception($e->getMessage());
    }
  }

  /**
   * destructor
   * @author VSR, 16/04/2012
   */
  public function  __destruct() {
   // destruye el objeto
  }
//</editor-fold>

//<editor-fold defaultstate="collapsed" desc="Metodos Compartidos">
  /**
   * obtiene los datos de la estadistica
   * @param <type> $idEstadistica
   * @return string
   * @author VSR, 18/04/2012
   */
  public static function obtenerDatos($idEstadistica) {
    $arr = null;
    try {
      //define llamada procedimiento almacenado
      $sp = "CALL spu_WfEstadistica_ObtenerDatos({idEstadistica});";

      //reemplaza marcas por valores reales
      $sp = str_replace("{idEstadistica}", $idEstadistica, $sp);

      //ejecuta procedimiento
      $arr = Bd::exec($sp);
    } catch (Exception $e) {
      $arr = null;
    }
    return $arr;
  }

  /**
   * ejecuta una consulta con parametros genericos
   * @param <type> $fechaDesde
   * @param <type> $fechaHasta
   * @param <type> $procedimientoAlmacenado
   * @return string
   * @author VSR, 15/04/2012
   */
  public static function consultaGenerica($procedimientoAlmacenado, $fechaDesde, $fechaHasta, $idEmpresa, $idUsuario) {
    $arr = null;
    try {
      //define llamada procedimiento almacenado
      $sp = "CALL {procedimientoAlmacenado}('{fechaDesde}','{fechaHasta}',{idEmpresa},{idUsuario});";

      //reemplaza marcas por valores reales
      $sp = str_replace("{procedimientoAlmacenado}", $procedimientoAlmacenado, $sp);
      $sp = str_replace("{fechaDesde}", $fechaDesde, $sp);
      $sp = str_replace("{fechaHasta}", $fechaHasta, $sp);
      $sp = str_replace("{idEmpresa}", $idEmpresa, $sp);
      $sp = str_replace("{idUsuario}", $idUsuario, $sp);

      //ejecuta procedimiento
      $arr = Bd::exec($sp);
    } catch (Exception $e) {
      $arr = null;
    }
    return $arr;
  }

//</editor-fold>
}
?>

